﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

// using System.Forms;
using BL;
using BE;
using System.Data;

namespace UI.DireccionAcademica
{
    public partial class frmCasosEspecialesNuevo : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                llenaCombos();
                
                if (Session["cod_alumno"] == null && Session["semestre"] == null)
                {
                    //Response.Redirect("frmCasosEspecialesNuevo.aspx");
                }
                else
                {
                    LlenarGrilla();
                }
            }
            else
            {
                
            }                                                                                                                     
            //if (!IsPostBack)
            //{
            // llenaCombos();
            //}         
        }

        private void llenaComboAlumno()
        {
            string semestreseleccionado = ddlSemestre.SelectedValue;
            CasosEspeciales_BL obj = new CasosEspeciales_BL();
            DataTable dato = new DataTable();
            dato = obj.CasosEspeciales_ListaxSemestre(semestreseleccionado);
            ddlAlumno.DataSource = dato;
            ddlAlumno.DataValueField = "Codigo";
            ddlAlumno.DataTextField = "Apellidos y Nombres";
            ddlAlumno.DataBind();
        }


        private void llenaCombos()
        {
            LlenarComboSemestre();

            String semestreseleccionado = Session["semestre"].ToString();
            if (!semestreseleccionado.Equals(""))
            {
                ddlSemestre.SelectedValue = semestreseleccionado;
            }


            LLenarComboAlumno();
            String alumnosesion = Session["cod_alumno"].ToString();
            if (!alumnosesion.Equals("")){
                ddlAlumno.SelectedValue = alumnosesion;
            }


        }

        private void LlenarComboSemestre() {
            lblMensaje.Text = "";
            try
            {
                DataTable dato = new DataTable();
                Alumno_BL obj = new Alumno_BL();
                dato = obj.DATA_PERIODO_listaxSemestre("TODOS");
                ddlSemestre.DataSource = dato;
                ddlSemestre.DataTextField = "semestre";
                ddlSemestre.DataValueField = "semestre";
                ddlSemestre.DataBind();
                ddlSemestre.Items.Insert(0, "--Selecciones--");
            }
            catch (Exception ex)
            {
                lblMensaje.Text = ex.Message;
            }
        }

        void llenaComboTipoCasoAlumnoGrilla(DropDownList combo)
        {
            Util_BL obj = new Util_BL();
            DataTable dato = new DataTable();
            dato = obj.DATA_CONDICION_TIPOCASO_LISTAR();
            combo.DataSource = dato;
            combo.DataTextField = "estado";
            combo.DataValueField = "CONDICION";
            combo.DataBind();
        }


        private void LLenarComboAlumno() {
            CasosEspeciales_BL obj = new CasosEspeciales_BL();
            DataTable dato = new DataTable();

            string semestre = ddlSemestre.SelectedValue;

            dato = obj.CasosEspeciales_ListaxSemestre(semestre);

            ddlAlumno.DataSource = dato;
            ddlAlumno.DataValueField = "Codigo";
            ddlAlumno.DataTextField = "Apellidos y Nombres";
            ddlAlumno.DataBind();
        }

        protected void ddlSemestre_SelectedIndexChanged(object sender, EventArgs e)
        {                        
            ddlAlumno.Items.Clear();
            grvCasoAlumno.DataSource = null;
            grvCasoAlumno.DataBind();
            LLenarComboAlumno();
            LlenarGrilla();        
        }

        protected void btnNuevo_Click(object sender, EventArgs e)
        {
          
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            LlenarGrilla();
        }


        private void LlenarGrilla() {
            lblMensaje.Text = "";
            try
            {
                CasosEspeciales_BL obj = new CasosEspeciales_BL();
                DataTable dato = new DataTable();
                string codigoAlumno = ddlAlumno.SelectedValue;
                String SemestreSeleccionado = ddlSemestre.SelectedItem.Text;
                dato = obj.CasosEspeciales_Curso_Alumno(SemestreSeleccionado, codigoAlumno);
                grvCasoAlumno.DataSource = dato;
                grvCasoAlumno.DataBind();
                CuentaItemsGrilla(dato);
             
            }
            catch (Exception ex)
            {
                lblMensaje.Text = ex.Message;
            }
          

        }

        public void CuentaItemsGrilla(DataTable dato)
        {
            if (dato.Rows.Count == 0)
            {
                grvCasoAlumno.Caption = "No se encontró coincidencias";
            }
            else if (dato.Rows.Count == 1)
            {
                grvCasoAlumno.Caption = "Total de items - 1 registro encontrado";
            }
            else
            {
                grvCasoAlumno.Caption = "Total de items - " + dato.Rows.Count + " registros encontrados";
            }
        }

  

      

        protected void btnGrabar_Click(object sender, ImageClickEventArgs e)
        {            
            try
            {
                Data_Obs_Prueba_BE objBE = new Data_Obs_Prueba_BE();
                Data_Obs_Prueba_BL objBL = new Data_Obs_Prueba_BL();
                CasosEspeciales_BL objBLCasosEspeciales = new CasosEspeciales_BL();
                lblMensaje.Text = null;


                String codCurso;
                int cont = 0;
                string nota;

                foreach (GridViewRow objItem in grvCasoAlumno.Rows)
                {
                    DropDownList ddl = ((DropDownList)objItem.Cells[0].FindControl("ddlTipoCasoAlumno"));
                    ddl.SelectedValue = ((DropDownList)objItem.Cells[0].FindControl("ddlTipoCasoAlumno")).SelectedValue;
                    ddl.SelectedItem.Text = ((DropDownList)objItem.Cells[0].FindControl("ddlTipoCasoAlumno")).SelectedItem.Text;
                    if (ddl.SelectedValue == "00")
                    {
                        //codCurso = "";
                        //return;
                        System.Web.UI.WebControls.TextBox txt = ((System.Web.UI.WebControls.TextBox)objItem.Cells[0].FindControl("txtRD"));
                        txt.Equals("");
                        txt.Text = "";                        
                        nota = txt.Text;

                    }
                    else
                    {
                        System.Web.UI.WebControls.TextBox txt = ((System.Web.UI.WebControls.TextBox)objItem.Cells[0].FindControl("txtRD"));
                        txt.Text = ((System.Web.UI.WebControls.TextBox)objItem.Cells[0].FindControl("txtRD")).Text.ToString();
                        nota = txt.Text.Trim();
                        //if (nota == "")
                        //{
                        //    lblMensaje.Text = "Error por favor resgistre datos obligatorios del formulario";
                        //    ((System.Web.UI.WebControls.TextBox)objItem.Cells[0].FindControl("txtRD")).Focus();
                        //    return;
                        //}
                    }
                    cont += 1;
                }

                objBE.semestre = ddlSemestre.SelectedValue;
                objBE.codAlumno = ddlAlumno.SelectedValue;                                    
                objBL.Eliminar(objBE);

                int cont1 = 0;
                int contActualizados = 0;
                
                foreach (GridViewRow objItem in grvCasoAlumno.Rows)
                {

                    

                    DropDownList ddl = ((DropDownList)objItem.Cells[0].FindControl("ddlTipoCasoAlumno"));
                    ddl.SelectedValue = ((DropDownList)objItem.Cells[0].FindControl("ddlTipoCasoAlumno")).SelectedValue;
                    ddl.SelectedItem.Text = ((DropDownList)objItem.Cells[0].FindControl("ddlTipoCasoAlumno")).SelectedItem.Text;
                    if (ddl.SelectedValue == "00")
                    {

                    }
                    else
                    {

                        var llaves = grvCasoAlumno.DataKeys[objItem.RowIndex].Values;
                        codCurso = (string)llaves[2];

                        //codCurso = grvCasoAlumno.Rows[cont1].Cells[2].Text;

                        


                        System.Web.UI.WebControls.TextBox txt = ((System.Web.UI.WebControls.TextBox)objItem.Cells[0].FindControl("txtRD"));
                        txt.Text = HttpUtility.HtmlDecode(((System.Web.UI.WebControls.TextBox)objItem.Cells[0].FindControl("txtRD")).Text.ToString());
                        nota = txt.Text;
                        objBE.semestre = ddlSemestre.SelectedValue;
                        objBE.codAlumno = ddlAlumno.SelectedValue;


                        




                        objBE.condicion = ddl.SelectedValue;
                        objBE.estado = ddl.SelectedItem.Text;
                        objBE.descrip = "";
                        //objBE.observac = ((System.Web.UI.WebControls.TextBox)objItem.Cells[0].FindControl("txtRD")).Text.ToString();
                        objBE.observac = nota.Trim();
                        objBE.ciclo = "";
                        objBE.actaoera = 0;
                        DataTable dato = new DataTable();
                        dato = objBLCasosEspeciales.CasosEspeciales_ultimo_ID_OBS();
                        int ultimo;
                        ultimo = Convert.ToInt32(dato.Rows[0]["ID_OBS"]) + 1;
                        objBE.id_obs = ultimo;
                        objBE.cursos = HttpUtility.HtmlDecode(grvCasoAlumno.Rows[cont1].Cells[1].Text);
                        objBE.codCurso = codCurso;
                        objBE.toma_curso = true;
                        objBL.Insertar(objBE);


                        
                        contActualizados+=1;

                    }
                    cont1 += 1;
                }

               
                    OperacionesAlumnos opeal = new OperacionesAlumnos();
                    Alumno alumno = opeal.obtenerAlumnoporCodigo(ddlAlumno.SelectedValue);
                    Academico_BL academico = new Academico_BL();
                    academico.ActualizarPeriodo(alumno.ID, alumno.Especialidad.ID, 1);

                    OperacionesNotas notasope = new OperacionesNotas();
                    //notasope.ActualizarFlagNotas();
                

                lblMensaje.Text = "Datos grabados correctamente";                
            }
            catch (Exception ex)
            {
                lblMensaje.Text = "Ocurrio un error al Grabar: " + ex.Message;               
            }                              
        }

   

        protected void btnCancelar_Click(object sender, ImageClickEventArgs e)
        {
            Session["cod_alumno"] = null;
            Session["semestre"] = null;
            Response.Redirect("frmCasosEspeciales.aspx");
        }

        protected void btnActualizar_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                Data_Obs_Prueba_BE objBE = new Data_Obs_Prueba_BE();
                Data_Obs_Prueba_BL objBL = new Data_Obs_Prueba_BL();

                String codCurso1;
                string nota1;

                int cont1 = 0;
                foreach (GridViewRow objItem in grvCasoAlumno.Rows)
                {
                    DropDownList ddl = ((DropDownList)objItem.Cells[0].FindControl("ddlTipoCasoAlumno"));
                    ddl.SelectedValue = ((DropDownList)objItem.Cells[0].FindControl("ddlTipoCasoAlumno")).SelectedValue;
                    ddl.SelectedItem.Text = ((DropDownList)objItem.Cells[0].FindControl("ddlTipoCasoAlumno")).SelectedItem.Text;
                    if (ddl.SelectedValue == "00")
                    {                        
                        objBE.semestre = ddlSemestre.SelectedValue;
                        objBE.codAlumno = ddlAlumno.SelectedValue;
                        objBE.condicion = ddl.SelectedValue;
                        objBE.estado = ddl.SelectedItem.Text;
                        objBE.observac = "";
                        objBE.cursos = "";
                        objBE.codCurso = "";
                        objBE.toma_curso = false;
                        objBL.Actualizar(objBE);
                    }
                    else
                    {
                        codCurso1 = grvCasoAlumno.Rows[cont1].Cells[2].Text;
                        System.Web.UI.WebControls.TextBox txt = ((System.Web.UI.WebControls.TextBox)objItem.Cells[0].FindControl("txtRD"));
                        txt.Text = HttpUtility.HtmlDecode(((System.Web.UI.WebControls.TextBox)objItem.Cells[0].FindControl("txtRD")).Text.ToString());
                        nota1 = txt.Text;
                        objBE.semestre = ddlSemestre.SelectedValue;
                        objBE.codAlumno = ddlAlumno.SelectedValue;
                        objBE.condicion = ddl.SelectedValue;
                        objBE.estado = ddl.SelectedItem.Text;
                        objBE.observac = nota1;                       
                        objBE.cursos = HttpUtility.HtmlDecode(grvCasoAlumno.Rows[cont1].Cells[1].Text);
                        objBE.codCurso = codCurso1;
                        objBE.toma_curso = true;
                        objBL.Actualizar(objBE);
                    }
                    cont1 += 1;
                }

                lblMensaje.Text = "Datos actualizados correctamente";     
            }
            catch (Exception)
            {
                
                throw;
            }
        }

        protected void bntRegresar_Click(object sender, ImageClickEventArgs e)
        {
            Session["cod_alumno"] = null;
            Session["semestre"] = null;
            Response.Redirect("frmCasosEspeciales.aspx");
        }

        protected void ddlAlumno_SelectedIndexChanged(object sender, EventArgs e)
        {
            LlenarGrilla();
            
        }

      

        

      
    }
}